Pengantar GGPLOT2

Ggplot2 adalah salah satu pustaka visualisasi data yang paling populer dalam ekosistem R. Dikembangkan oleh Hadley Wickham, pustaka ini menggunakan konsep grammar of graphics, yang memungkinkan pengguna untuk membuat visualisasi data yang kompleks dengan cara yang terstruktur dan fleksibel. ggplot2 dirancang untuk mempermudah proses eksplorasi data melalui grafik yang informatif, estetis, dan konsisten.

Dalam ggplot2, visualisasi dibangun secara bertahap menggunakan lapisan-lapisan (layers), yang mencakup data, estetika (seperti warna, ukuran, atau bentuk), dan geometri (jenis grafik seperti garis, titik, atau batang). Pendekatan ini memberikan keleluasaan kepada pengguna untuk menyesuaikan setiap elemen grafik sesuai kebutuhan. Selain itu, ggplot2 mendukung berbagai jenis data dan kompatibel dengan pustaka R lainnya, seperti dplyr dan tidyr, yang memperkuat kemampuannya dalam analisis data.

Dengan menguasai ggplot2, pengguna dapat menyampaikan informasi yang kompleks melalui visualisasi yang mudah dipahami. Kemampuan ini sangat penting dalam konteks analisis data modern, di mana pengambilan keputusan sering kali bergantung pada pemahaman yang cepat dan akurat terhadap pola, tren, dan anomali dalam data. Oleh karena itu, ggplot2 menjadi alat yang esensial bagi peneliti, analis, dan profesional yang bekerja dengan data.

Introduction

Berikut adalah pengantar dan materi singkat mengenai ggplot2 yang mencakup pembuatan data frame, pengaturan warna yang berbeda, dan visualisasi data dengan lizard sebagai contoh:

Introduction ggplot2 ggplot2 adalah pustaka visualisasi data dalam bahasa pemrograman R yang menawarkan fleksibilitas dan struktur dalam membuat berbagai jenis grafik. ggplot2 memungkinkan pengguna untuk membuat visualisasi data yang menarik secara estetis, informatif, dan dapat disesuaikan sesuai kebutuhan. Dalam panduan ini, kita akan membahas langkah-langkah dasar untuk menggunakan ggplot2, yaitu:

  1. Membuat data frame sebagai dasar untuk grafik.
  2. Menyesuaikan warna untuk memperjelas perbedaan antar kategori.
  3. Menampilkan data dengan pendekatan visual menggunakan contoh data “lizard.”

1.1 Struktur Dasar Dasar GGPLOT2

Struktur utama dalam ggplot2 terdiri dari beberapa komponen berikut:

  1. Data = Data frame yang digunakan sebagai sumber informasi.
  2. Aesthetic Mapping (aes) = Pemetaan variabel data ke elemen visual, seperti sumbu x, sumbu y, warna, ukuran, atau bentuk.
  3. Geometries (geom) = Jenis grafik yang akan ditampilkan, seperti grafik batang, garis, atau titik.
  4. Faceting = Membagi grafik ke dalam beberapa subgrafik berdasarkan kategori tertentu.
  5. Themes = Menyesuaikan tampilan estetika grafik, seperti font, warna latar, atau garis kisi.

Berikut di bawah ini adalah contoh membuat data frame dan membuat plot titik pada grafik :

# Muat library ggplot2
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.2
# Buat data frame contoh
data <- data.frame(x = rnorm(100), y = rnorm(100))
 
# Buat plot titik
ggplot(data, aes(x = x, y = y))+
geom_point()+
labs(tittle = "Plot Titik", x = "Sumbu X", y = "Sumbu Y")+
theme_linedraw()

1.2 Menambahkan Warna Pada Grafik dan Titik

Pemetaan warna berdasarkan kategori dapat dilakukan untuk memperjelas perbedaan antar kelompok.

Dalam contoh ini, warna mewakili setiap kategori huruf, sehingga pola distribusi data dapat lebih mudah diamati.

# Muat library ggplot2
library(ggplot2)

# Buat data frame contoh
data <- data.frame(x = rnorm(100), y = rnorm(100), grup = sample(c("A", "B", "C", "D"), 100, replace = TRUE))

# Buat plot titik dengan faceting dan warna berbeda untuk setiap grup
ggplot(data, aes(x = x, y = y, color = grup)) +
  geom_point()+
  facet_wrap(~ grup)+ 
  scale_color_manual(values = c("A" = "blue", "B" = "red", "C" = "yellow", "D" = "Black"))+ # Menentukan warna untuk grup A, B, C dan D
  theme_dark()

1.3 Read Data

A. Membaca Data dari File CSV

CSV (Comma-Separated Values) adalah format data yang paling umum digunakan. Berikut beberapa cara membaca file CSV. Menggunakan read.csv (Fungsi Bawaan R)

Membaca file CSV = data_csv <- read.csv(“data.csv”)

Melihat beberapa baris pertama = head(data_csv)

B. Membaca Data dari File Excel

Untuk membaca data dari file Excel, gunakan pustaka seperti readxl atau openxlsx.

Menggunakan Pustaka readxl = library(readxl)

Membaca sheet pertama dari file Excel = data_excel <- read_excel(“data.xlsx”)

Membaca sheet tertentu = data_excel_sheet2 <- read_excel(“data.xlsx,” sheet = 2)

Melihat beberapa baris pertama = head(data_excel)

1.4 View Lizard

Pada bagian ini, saya akan memberikan contoh cara membaca data dari sebuah file CSV. File yang digunakan dalam contoh ini bernama lizard.csv. Sebelum memulai, pastikan file tersebut telah diunduh atau tersedia di perangkat Anda. Setelah file diunduh, salin file tersebut ke dalam folder kerja yang telah Anda buat untuk proyek ggplot2. Letakkan file tersebut di dalam folder tersebut untuk memudahkan akses. Setelah itu, tambahkan blok kode (chunk) dalam skrip R untuk membaca data tersebut. Contoh implementasi dapat dilihat pada kode berikut

lizard <- read.csv("lizards.csv")
View(lizard)
# Buat plot titik
library(ggplot2)
ggplot(lizard, aes(x = total_length, y = weight)) +
  geom_point() +
  labs(title = "Plot Titik", x = "total_length", y = "weight") +
  theme_light()

library(ggplot2)
ggplot(lizard, aes (x=total_length, y=common_name))+
  geom_jitter()

library(ggplot2)
ggplot(lizard, aes(x=total_length))+
  geom_histogram()+
theme_linedraw()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

library(ggplot2)
ggplot(lizard, aes (y=common_name))+
  geom_bar()

library(ggplot2)
ggplot(lizard, aes(x=weight))+
  geom_histogram(color = "yellow", fill = "red", size = 1.5, linetype = "dotted")+
  theme_linedraw()+
  labs(title = "Dinding Histogram Lizard", x="weight", y="count")
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

# Buat plot titik
library(ggplot2)
ggplot(lizard, aes(x = total_length, y = weight)) +
  geom_point(color = "blue", size = 10, shape = 11) +
  labs(title = "Plot Titik Tabel Warna Baru", x = "total_length", y = "weight") +
  theme_linedraw()

# Buat plot titik
library(ggplot2)
ggplot(lizard, aes(x = total_length, y = weight, color = common_name)) +
  geom_point(size = 3, shape = 18, fill = "red") +  # Anda bisa mengatur ukuran dan bentuk titik
  labs(title = "Plot Titik Tabel Warna Berdasarkan Common Name", 
       x = "total_length", 
       y = "weight") +
  theme_linedraw()

# Pastikan untuk memuat paket yang diperlukan
library(plotly)
## Warning: package 'plotly' was built under R version 4.4.2
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.2
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
# Membuat data frame dengan lebih banyak titik
set.seed(123)  # Untuk reproduktifitas
n <- 100  # Jumlah titik

lizard <- data.frame(
  common_name = paste("Lizard", 1:n),
  weight = runif(n, 1, 2),  # Berat acak antara 1 dan 2
  life_expectancy = runif(n, 3, 10),  # Harapan hidup acak antara 3 dan 10
  continent = sample(c("Asia", "Africa", "Europe", "America"), n, replace = TRUE),
  income = runif(n, 3000, 10000),  # Pendapatan acak antara 3000 dan 10000
  year = rep(2000:2005, length.out = n)  # Tahun dari 2000 hingga 2005
)

# Buat plot interaktif dengan plotly
plot <- plot_ly(data = lizard, 
                 x = ~income, 
                 y = ~life_expectancy, 
                 color = ~continent, 
                 colors = "Set3",  # Menggunakan palet warna yang lebih beragam
                 type = 'scatter', 
                 mode = 'markers', 
                 marker = list(size = 10, symbol = 'circle', opacity = 0.7),
                 frame = ~year,  # Menambahkan frame untuk animasi
                 text = ~common_name, 
                 hoverinfo = "text") %>%
  layout(title = "Hubungan antara Income dan Life Expectancy di Berbagai Benua",
         xaxis = list(title = "Income"),
         yaxis = list(title = "Life Expectancy"),
         showlegend = TRUE) %>%
  animation_opts(frame = 100, redraw = TRUE, mode = "immediate") %>%  # Mode immediate untuk animasi yang lebih halus
  animation_slider(currentvalue = list(prefix = "Year: "))  # Menambahkan slider untuk tahun

# Tampilkan plot
plot